﻿/*
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/

CKEDITOR.plugins.add('table',
{
    init: function (editor) {
        var table = CKEDITOR.plugins.table,
			lang = editor.lang.table;

        editor.addCommand('table', new CKEDITOR.dialogCommand('table'));
        editor.addCommand('tableProperties', new CKEDITOR.dialogCommand('tableProperties'));

        editor.addCommand('detailstable', new CKEDITOR.dialogCommand('detailstable'));


        editor.ui.addButton('Table',
			{
			    label: lang.toolbar,
			    command: 'table'
			});


        CKEDITOR.dialog.add('table', this.path + 'dialogs/table.js');
        CKEDITOR.dialog.add('tableProperties', this.path + 'dialogs/table.js');
      
        // If the "menu" plugin is loaded, register the menu items.
        if (editor.addMenuItems) {
            editor.addMenuItems(
				{
				    table:
					{
					    label: lang.menu,
					    command: 'tableProperties',
					    group: 'table',
					    order: 5
					},
				    tabledelete:
					{
					    label: lang.deleteTable,
					    command: 'tableDelete',
					    group: 'table',
					    order: 1
					}

				});
        }

        editor.on('doubleclick', function (evt) {
            var element = evt.data.element;

            if (element.is('table')) {
                evt.data.dialog = 'tableProperties';
            }
        });

        // If the "contextmenu" plugin is loaded, register the listeners.
        if (editor.contextMenu) {
            editor.contextMenu.addListener(function (element, selection) {
                if (!element || element.isReadOnly())
                    return null;

                var isTable = element.hasAscendant('table', 1);

                if (isTable) {
                    return {
                        tabledelete: CKEDITOR.TRISTATE_OFF,
                        table: CKEDITOR.TRISTATE_OFF
                    };
                }

                return null;
            });
        }
    }
});
